# 支持所有数据类型，即时存取,可以用字典存取数据到文件的序列化模块
import shelve

shv_tool = shelve.open('a.shv')
"""
不同系统会产生不同的文件：
这里产生如下的3个文件：
a.shv.bak
a.shv.dat
a.shv.dir
"""
# 序列化
shv_tool['name'] = '高嘉银'
# 反序列化
res = shv_tool['name']
print(res)
# 文件需要通过shelve对象来关闭
shv_tool.close()

# 二次操作
shv_tool = shelve.open('a.shv')
print(shv_tool['name'])
shv_tool.close()

with shelve.open('a.shv') as shv_tool:
    print(shv_tool['name'])

with shelve.open('a.shv', writeback=True) as shv_tool:
    # shv_tool['job'] = ['java', 'python', 'go']
    # print(shv_tool['job'])

    shv_tool['job'].append('php')  # 先从shv_tool中获取数据加载到内存中，然后再append一条数据，然后回写到文件中（默认回写是False）
    print(shv_tool['job'])
